package com.pis.persistence;

import java.util.List;

import com.pis.model.Medico;
import com.pis.model.Pessoa;
import com.pis.util.DataBaseConnection;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class MedicoDAO implements IMedicoDAO{

	@Override
	public boolean add(Medico t) {
	    String sql="";
            PessoaDAO pdao = new PessoaDAO();
            pdao.add(t.getPessoa());
            Pessoa p = pdao.getByCpf(t.getPessoa().getCpf());
            sql = "INSERT INTO pis.Medico (Especialidade, Pessoa_CPF) VALUES ('"+t.getEspecialidade()+"', '"+p.getCpf()+"')";
        try {
            if(DataBaseConnection.UpdateDB(sql)>0) return true;
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
            return false;
	}

	@Override
	public boolean edit(Medico _new, Medico _old) {
		String sql="update Medico set especialidade='"+_new.getEspecialidade()+"', pessoa_cpf='"+_new.getPessoa().getCpf()+"' where pessoa_cpf='"+_old.getPessoa().getCpf()+"'";
                try {
                    System.out.println(sql);
                    if(DataBaseConnection.UpdateDB(sql)>0) return true;
                } catch (Exception ex) {
                    Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
                return false;
	}

	@Override
	public boolean del(Medico t) {
		String sql = "delete from Medico where pessoa_cpf='"+t.getPessoa().getCpf()+"'";
        try {
            if(DataBaseConnection.UpdateDB(sql)>0)return true;
        } catch (Exception ex) {
            Logger.getLogger(MedicoDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
		return false;
	}

	@Override
	public List<Medico> findAll() {
	 try {
            String sql  = "select * from Medico M, Pessoa P where M.pessoa_cpf=P.cpf";
            ResultSet rs = DataBaseConnection.getQuery(sql);
            ArrayList<Medico> lista = new ArrayList<Medico>();
            while(rs.next()){
                Medico func = new Medico();
                Pessoa pessoa    = new Pessoa();
                func.setEspecialidade(rs.getString("especialidade"));
                pessoa.setCpf(rs.getString("cpf"));
                pessoa.setData_nascimento(rs.getString("dataNascimento"));
                pessoa.setNome(rs.getString("nome"));
                pessoa.setTelefone(rs.getString("telefone"));
                func.setPessoa(pessoa);
                lista.add(func);
            }
            return lista;
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
            return null;
	}

	@Override
	public Medico getByID(int id) {
		// TODO Auto-generated method stub
		return null;
	}
        public Medico getByCPF(String cpf){
        try {
            String sql = "select * from Medico M, Pessoa P where M.pessoa_cpf=P.cpf and M.pessoa_cpf='"+cpf+"'";
            Medico func = null;
            ResultSet rs = DataBaseConnection.getQuery(sql);
            if(rs.next()){
                func = new Medico();
                Pessoa pessoa = new Pessoa();
                func.setEspecialidade(rs.getString("especialidade"));
                pessoa.setCpf(rs.getString("cpf"));
                pessoa.setData_nascimento(rs.getString("dataNascimento"));
                pessoa.setNome(rs.getString("nome"));
                pessoa.setTelefone(rs.getString("telefone"));
                func.setPessoa(pessoa);
            }
            return func;
        } catch (Exception ex) {
            Logger.getLogger(FuncionarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
        }

}
